# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/26 19:45 
@Author  : ZhangShenao 
@File    : set.py 
@Desc    : set集合
set集合是用于存放批量元素的数据结构,它是无需的,且集合中的元素没有重复
set是可变的,可以向其中添加、删除、修改元素
"""
# 创建集合
nums = {1, 2, 3, 4, 5}
print(f'nums: {nums}')

# 创建空set,要使用set()函数,而不能直接使用{},因为{}是空字典
empty_set = set()
print(f'empty_set: {empty_set}')

# 使用add()函数,向set中添加元素
nums.add(6)
nums.add(7)
print(f'nums: {nums}')
# 添加重复元素时,会自动进行去重处理
nums.add(1)
nums.add(2)
print(f'nums: {nums}')

# 使用update()函数,从另一个set中批量添加元素
# 新set中的所有元素都会被添加至原set,并自动进行去重处理
nums1 = {3, 4, 5, 6, 7, 8, 9}
nums.update(nums1)
print(f'nums: {nums}')

# 使用for-in语句遍历set
print('traverse nums:')
for n in nums:
    print(n)

# 使用in关键字,判断元素是否在set中
print(f'1 is in nums? {1 in nums}')  # True
print(f'100 is in nums? {100 in nums}')  # False

# 使用pop()函数,随机删除set中的一个元素,并返回这个元素
print(f'pop num: {nums.pop()}')

# 使用remove()函数,删除指定元素
nums.remove(2)
print(f'nums: {nums}')
# 如果待删除的元素不存在,则会抛出KeyError异常
# nums.remove(100)  # KeyError: 100

# 使用discard()函数,删除指定元素
nums.discard(3)
# 如果待删除的元素不存在,也不会抛出异常
nums.discard(100)
print(f'nums: {nums}')

# 使用clear()函数,清空set
nums.clear()
print(f'nums: {nums}')
